package demo.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import demo.dao.ReaderDao;
import demo.entity.Reader;

public class ReaderUpdate extends JPanel implements ActionListener{
	private JTextField readerId;//用于输入要查找的学生的id
	private ReaderPanel readerPanel;// ReaderPanel对象，用于显示和修改学生信息
	private ReaderDao readerDao = new ReaderDao();// 创建ReaderDao对象，用于将Reader对象的信息更新到数据库表
	private Reader reader;

	/**
	 * Create the panel.
	 */
	public ReaderUpdate() {
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		JPanel panel = new JPanel();
		add(panel);
		
		JLabel lblNewLabel = new JLabel("请输入学号：");
		panel.add(lblNewLabel);
		
		readerId = new JTextField();
		panel.add(readerId);
		readerId.setColumns(10);
		readerId.addActionListener(this);// 为文本框注册Action事件监听器，如果在文本框中按回车键，则该监听器的actionPerformed方法被调用
		
		JButton btnFind = new JButton("查找");
		btnFind.addActionListener(this);//为“查找”按钮注册Action事件监听器，如果该按钮被点击，则该监听器的actionPerformed方法被调用
		panel.add(btnFind);
		
		
		readerPanel = new ReaderPanel();
		add(readerPanel);		
		readerPanel.getBtnSubmit().setText("修改记录");// 将btnSubmit按钮上的文本设为“修改记录”
		// 为recordPane的btnSubmit按钮注册事件处理器
		readerPanel.getBtnSubmit().addActionListener(new ActionListener() {
			// 用于处理“修改记录”按钮的Action击事件，将修改后的数据更新到数据库的Readers表中。
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					// 将recordPane面板中修改后的数据赋值给Reader属性
					reader.setId(readerPanel.getReaderId().getText());
					reader.setPassword(readerPanel.getReaderPassword().getText());
					reader.setName(readerPanel.getReaderName().getText());
					reader.setSex(readerPanel.getReaderSex().getText());
					reader.setBirth(Date.valueOf(readerPanel.getReaderBirth().getText()));
					reader.setPro(readerPanel.getReaderPro().getText());
					reader.setGrade(readerPanel.getReaderGrade().getText());
					reader.setTel(readerPanel.getReaderTel().getText());
					reader.setEmail(readerPanel.getReaderEmail().getText());

					// 调ReaderDao对象的update方法，将Reader对象的新数据保存到数据库Reader表中
					int affectedRecords = readerDao.update(reader);
					JOptionPane.showMessageDialog(null, "修改" + affectedRecords + "条记录成功！", "修改成功",
							JOptionPane.INFORMATION_MESSAGE);

				} catch (Exception e1) {
					JOptionPane.showMessageDialog(null, "数据格式有误！", "修改失败", JOptionPane.ERROR_MESSAGE);
					e1.printStackTrace();
				}
			}
		});
		readerPanel.getReaderId().setEditable(false);// 让readerId文本框变灰，不可修改
		readerPanel.setVisible(false);;// 隐藏recordPane面板

	}
	
	/**
	 * Action事件处理方法，用于处理readerId文本框中按回车键和btnFind按钮点击事件，从数据库Readers表中查找所示id号的记录， 并显示
	 * 
	 * @return 返回所创建的Action事件处理器
	 */
	@Override
	public void actionPerformed(ActionEvent e) {

		String id = readerId.getText();// 获取readerId文本框的内容
		if (id != null) {// 如果id不为空
			id = id.trim();// 去掉前后空格
			if (!id.equals("")) {// 如果id不是空字符串
				// 调用ReaderDao的findById方法在数据库Readers表中查找对应id号的记录，并将结果以Reader对象的方式返回
				Reader reader = readerDao.findById(id);
				if (reader != null) {// 如果Reader不为空
					this.reader=reader;//将查找结果赋值给成员变量Reader					
					//在recordPane面板上显示查找的结果
					readerPanel.getReaderId().setText(reader.getId());
					readerPanel.getReaderPassword().setText(reader.getPassword());
					readerPanel.getReaderName().setText(reader.getName());
					readerPanel.getReaderSex().setText(reader.getSex());
					readerPanel.getReaderBirth().setText(reader.getBirth().toString());
					readerPanel.getReaderPro().setText(reader.getPro());
					readerPanel.getReaderGrade().setText(reader.getGrade());
					readerPanel.getReaderTel().setText(reader.getTel());
					readerPanel.getReaderEmail().setText(reader.getEmail());
					readerPanel.setVisible(true);// 显示recordPane面板					
				} else {					
					JOptionPane.showMessageDialog(this, "你要查找的id为\"" + readerId.getText() + "\"的记录不存在。","查找失败",JOptionPane.ERROR_MESSAGE);
				}
			}
		}
		readerId.setText("");// 清除readerId文本框中的内容，以备再次输入

	}

}
